package com.leetcode;

/**
 * 数字 n 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 有效的 括号组合。
 * 有效括号组合需满足：左括号必须以正确的顺序闭合。
 *
 * 实现：
 *  利用递归函数：helpGenerate(List<String> list, String curren, int nowLeft, int leftNoRight)
 *  参数说明：
 *   List<String> list:保存有效括号是列表
 *   String curren：已经确定下来的括号。比如说已经确定了"(())",下一个只能是左括号
 *   int nowLeft:剩下多少个左括号没有被插入。比如说总的三组括号，curren="()",则剩下两个左括号
 *   int leftNoRight：curren中有多少个左括号没有 被 右括号 匹配的
 *
 *   函数里有可以存有效括号的字符串curren，每调用一次函数，函数里都有自己的curren
 *   即：没调用一次函数就代表一种有效的括号组合
 *   具体看函数体内容。
 */
public class GenerateParenthesis {
    public static void main(String[] args) {
        for (int i = 1; i < 8; i++) {
            System.out.println(new Solution().generateParenthesis(i));
        }
    }
}
